/**
 * SecurityManager.java
 */
package tk.sunlatus.project.security;

import java.security.Key;

import tk.sunlatus.project.security.encode.Encoder;


/**
 * @author Sunlotus
 * 
 */
public interface SunlotusSecurityManager {

    /**
     * 方法描述：密码加密
     * @param src
     * @param salt
     * @return
     */
    String digest(String src, String salt);
    
    /**
     * 方法描述：生成密钥
     * @return 密钥
     */
    Key getKey();

    /**
     * 方法描述：将密钥转换成十六进制字符串
     * @param key 密钥
     * @return 密钥十六进制
     */
    String getKeyHex(Key key);

    /**
     * 方法描述：加密
     * @param src 原文
     * @param key 密钥
     * @return 密文
     */
    String encode(String src, Key key);

    /**
     * 方法描述：加密
     * @param src 原文
     * @param keyHexStr 密钥十六进制
     * @return 密文
     */
    String encode(String src, String keyHexStr);

    /**
     * 方法描述：解密
     * @param encodedStr 密文
     * @param keyHexStr 密钥十六进制
     * @return 原文
     */
    String decode(String encodedStr, String keyHexStr);

    /**
     * 方法描述：解密
     * @param encodedStr 密文
     * @param keyHexStr 密钥
     * @return 原文
     */
    String decode(String encodeStr, Key key);

    void setEncoder(Encoder encoderIDEAImpl);

}
